var router ;
//https://weixin.mofing.com/sharetoken.json
//https://weixin.mofing.com/sharewxtoken.json
var $url_getWeixinJsConfig="/wechat/joins/sharetoken/10000.json";
//var $url_getWeixinJsConfig="https://weixin.mofing.com/sharewxtoken.json";
var base_url="/";
var _Global_ = 'web';// 判断是app还是web,wechat
var whereFrom = GetQueryString("from");// 来源
//获取cookie中的用户id
var login_uid=$.cookie("Mofing[userid]");
var login_token=$.cookie("Mofing[token]");
var login_uid=439124;
var login_token='7832b80551c0ef432848b35a08cf248d';
var userAgentInfo = navigator.userAgent.toLowerCase();
if(userAgentInfo.match(/MicroMessenger/i)=="micromessenger") {
	_Global_='wechat';
}else if(userAgentInfo.match(/MofingEYK/i)=="mofingeyk") {
	_Global_='app';
}
if(login_uid<1){
	login_uid=0;
}
var storage=$.localStorage;
var routeInfo;
var login_user_info=null;
var order_info=null;
var order_no="";
var longitude=storage.get("longitude");//114.0258336067;
var latitude=storage.get("latitude");//22.5360049867;
/**
 * 接入微信支持
 * */
function setJSAPI(docid,doccid){
	 return new Promise(function(resolve, reject) {
	 	var shareData;
	 	wx.error(function(res){
	 		showErrorMsg(res.errMsg);
	 		console.log(res);
	 		shareData["msg"]=res.errMsg;
	 		reportError(shareData);
		    // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
		});
	    $.post($url_getWeixinJsConfig,{url:location.href.split('#')[0],from:5,docid:docid,doccid:doccid}, function (res) {
	    	shareData=res;
	    	if(res.doc){
	    		data=res.doc;
	    		wx.ready(function(){
	    			makeShare(data.title,data.sub_title,data.shareLink,data.icon_path);
					//隐藏复制菜单
					wx.hideMenuItems({
						menuList: [
						'menuItem:copyUrl',
						'menuItem:originPage',
						'menuItem:favorite',
						'menuItem:openWithQQBrowser',
						'menuItem:openWithSafari',
						'menuItem:share:email']
					});
	    		})
	    	}
	    	
	        wx.config({
	            beta: true,
	            debug: false,
	            appId: res.appId,
	            timestamp: res.timestamp,
	            nonceStr: res.nonceStr,
	            signature: res.signature,
	            jsApiList: [
					'checkJsApi',
					'openLocation',
					'getLocation',
					'hideMenuItems',
					'hideOptionMenu',
					'showOptionMenu',
					'closeWindow',
					'onMenuShareTimeline',
					'onMenuShareAppMessage',
					'onMenuShareQQ',
					'onMenuShareWeibo',
					'onMenuShareQZone',
					'chooseImage',
					'previewImage',
					'uploadImage'
	            ]
	        });
	        resolve(res);
	    });
	 });
}
//抽奖活动分享
function homeShare(res){
	//获取分享话语
	$.get(base_url+"wechat/pages/yiqizhuan.json",function(data){
		//判断是否登录，如果不是在微信，则不会重新登录
		if(!data.login && !$.isEmptyObject(res)){
			go(data.shareUrl);
			return;
		}
		if(!data.uid){
			$("#btn_lingjiang").attr("href","javascript:void(0);").click(function(){
				bindMobile("#/receive");
				return false;
			});
			$("#btn_income").attr("href","javascript:void(0);").click(function(){
				bindMobile("#/income");
				return false;
			});
		}
		makeShare(data.title,data.desc,data.shareUrl,data.imgUrl);
		//隐藏复制菜单
		wx.hideMenuItems({
			menuList: ['menuItem:copyUrl',
			'menuItem:originPage',
			'menuItem:favorite',
			'menuItem:openWithQQBrowser',
			'menuItem:openWithSafari',
			'menuItem:share:email']
		});
	})
}
//认领店铺分享
function claimShare(){
	//获取分享话语
	$.get(base_url+"firework/claim-stores/abaoshare.json",function(data){
		//wx.ready(function() {
			makeShare(data.title,data.desc,data.shareUrl,data.imgUrl);
		//});
	})
}
//共享人分享
function partakeShare(callback){
	//获取分享话语
	$.get(base_url+"firework/invites/partake.json",function(data){
		makeShare(data.title,data.desc,data.shareUrl,data.imgUrl);
		if(callback){
			callback();
		}
	});
}
function makeShare(title,desc,link,imgUrl){
	wx.onMenuShareTimeline({
		title :"【"+ title+"】"+desc,
		link : link,
		imgUrl : imgUrl,
		success : function() {
			console.log("分享成功")
		}
	});
	wx.onMenuShareAppMessage({
		title : title,
		link : link,
		imgUrl : imgUrl,
		desc : desc,
		success : function() {
			console.log("分享成功")
		},
		cancel : function() {
			console.log("取消分享")
		}
	});
	wx.onMenuShareQQ({
		title : title,
		link : link,
		imgUrl : imgUrl,
		desc : desc,
		success : function() {
			console.log("分享成功")
		},
		cancel : function() {
			console.log("取消分享")
		}
	});
	wx.onMenuShareWeibo({
		title : title,
		link : link,
		imgUrl : imgUrl,
		desc : desc,
		success : function() {
			console.log("分享成功")
		},
		cancel : function() {
			console.log("取消分享")
		}
	});
	wx.onMenuShareQZone({
		title : title,
		link : link,
		imgUrl : imgUrl,
		desc : desc,
		success : function() {
			console.log("分享成功")
		},
		cancel : function() {
			console.log("取消分享")
		}
	});
}
function getLocation2 (hasok) {
  return new Promise(function(resolve, reject) {
	wx.getLocation({
		type: 'wgs84',
		success: function (res) {
			console.log("微信获取地理位置成功")
			latitude = res.latitude; 
			longitude = res.longitude;
			//保存定位到本地存储
			storage.set("latitude",latitude);
        	storage.set("longitude",longitude);
			resolve(res);
		}
	});
	//默认5秒后，找不到经纬度也执行
	if(hasok){
		setTimeout(function(){
			console.log("微信获取地理位置超时")
			resolve({});
		},5000);
	}
  })
}
function getLocation (hasok) {
  return new Promise(function(resolve, reject) {
  	wx.ready(function () {
		wx.getLocation({
			type: 'wgs84',
			success: function (res) {
				console.log("微信获取地理位置成功")
				latitude = res.latitude; 
				longitude = res.longitude;
				//保存定位到本地存储
				storage.set("latitude",latitude);
	        	storage.set("longitude",longitude);
				resolve(res);
			}
		});
	}); 
	//默认5秒后，找不到经纬度也执行
	if(hasok){
		setTimeout(function(){
			console.log("微信获取地理位置超时")
			resolve({});
		},5000);
	}
  })
}

function go(url){
	window.location.href = url;
	//window.location.hash = url;
}
function goback(no){
	window.history.go(no);
}
function setTitle(t){
	document.title=t;
}
function scrollTop(){
	//暂停滚动加载数据
	killPullLoad();
	//滚动条滚到顶部
	$("body").scrollTop(0);
}
function scrollTop2(){
	$('html, body').scrollTop(0);
}

function scrollTop3(index) {
	$("html,body").animate({
		scrollTop: index
	});
}
/**
 *对Date的扩展，将 Date 转化为指定格式的String
 *月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
 *年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 *例子：
 *(new Date()).format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
 *(new Date()).format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
 * @param {Object} fmt
 */
Date.prototype.format = function(fmt) {
	var o = {
		"M+": this.getMonth() + 1, //月份
		"d+": this.getDate(), //日
		"h+": this.getHours(), //小时
		"m+": this.getMinutes(), //分
		"s+": this.getSeconds(), //秒
		"q+": Math.floor((this.getMonth() + 3) / 3), //季度
		"S": this.getMilliseconds() //毫秒
	};
	if(/(y+)/.test(fmt))
		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	for(var k in o)
		if(new RegExp("(" + k + ")").test(fmt))
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
	return fmt;
}


/*时间格式化*/
formatDate = function(date, pattern) {
	//如果不设置，默认为当前时间
	if(!date) date = new Date();
	if(typeof(date) === "string") {
		if(date == "") date = new Date();
		else date = new Date(date.replace(/-/g, "/"));
	}
	/*补00*/
	var toFixedWidth = function(value) {
		var result = 100 + value;
		return result.toString().substring(1);
	};

	/*配置*/
	var options = {
		regeExp: /(yyyy|M+|d+|h+|m+|s+|ee+|ws?|p)/g,
		months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
		weeks: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
		weeksZh: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
	};

	/*时间切换*/
	var swithHours = function(hours) {
		return hours < 12 ? "AM" : "PM";
	};

	/*配置值*/
	var pattrnValue = {
		"yyyy": date.getFullYear(), //年份
		"MM": toFixedWidth(date.getMonth() + 1), //月份
		"dd": toFixedWidth(date.getDate()), //日期
		"hh": toFixedWidth(date.getHours()), //小时
		"mm": toFixedWidth(date.getMinutes()), //分钟
		"ss": toFixedWidth(date.getSeconds()), //秒
		"ee": options.months[date.getMonth()], //月份名称
		"ws": options.weeksZh[date.getDay()], //星期名称
		"M": date.getMonth() + 1,
		"d": date.getDate(),
		"h": date.getHours(),
		"m": date.getMinutes(),
		"s": date.getSeconds(),
		"p": swithHours(date.getHours())
	};

	return pattern.replace(options.regeExp, function() {
		return pattrnValue[arguments[0]];
	});
};
//增加天数
function dayAdd(nub,oldday){
	var date = new Date(oldday)
	date.setDate(date.getDate() + nub);
	return formatDate(date,"yyyy-MM-dd");
}

//获取表单数据
function getFormData(obj,id){
	var data = $(obj).find("#"+id).serializeArray();
	//console.log(data)
	var data_out={};
	$.each(data, function(ind,ele) {
		data_out[ele.name]=ele.value;
	});
	console.log(data_out)
	return data_out;
}

function wakePay(payParams,callback) {
    wx.ready(function(){
        wx.chooseWXPay({
        	timestamp: payParams.timeStamp,
            nonceStr: payParams.nonceStr,
            package: payParams.package,
            signType: payParams.signType,
            paySign: payParams.paySign,
            success: function (res) {
            	//mui.toast('支付成功');
            	goback(-1);
            	if(callback)callback(1);
                //window.location.href = "/helppaysuccess";
            },
            cancel: function (res){
            	//mui.toast('您已取消支付');
            	if(callback)callback(2);
                return true;
            },
            fail: function(res) {
            	//mui.toast('支付失败');
            	if(callback)callback(3);
            }
        });
    });
}

(function ($) {
    $.getUrlParam = function (name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) return unescape(r[2]); return null;
    }
})(jQuery);

function addBodyClass(className){
	if(!$("body").hasClass(className)){
		$("body").addClass(className)
	}
}
function removeBodyClass(className){
	$("body").removeClass(className)
}
function bindMobile(goto){
	//tpl_mobile
	$("body").append(template("tpl_mobile",{}));
	//锁屏
	$("#container").addClass("lock").css("height",$(window).height());
	$("#mobile_panel").on("click",".shadow",function(){
		$("#mobile_panel").remove();
		$("#container").removeClass("lock").css("height","auto");
	}).on("click","#btn_send_sms",function(){
		var mobile=$("#mobile_panel input[name='mobile']").val();
		//检查手机号
		if(!isMobile(mobile)){
			showErrorMsg("手机号格式不正确");
			return false;
		}
		djs.start(this);
		//发送短信
		ajaxPost("utils/sms/sendcode.json",{"phone":mobile,"type":7},function(data){
			showInfoMsg("发送成功，繁忙时段可能会有延时，请耐心等待",20000);
		})
	}).on("click","#btn_submit",function(){
		var mobile=$("#mobile_panel input[name='mobile']").val();
		var code=$("#mobile_panel input[name='code']").val();
		//检查手机号
		if(!isMobile(mobile)){
			showErrorMsg("手机号格式不正确");
			return false;
		}
		if(code==""){
			showErrorMsg("短信码错误");
			return false;
		}
		hideInfoMsg();
		showLoading("正在验证...");
		$.post("/account/bindmobile.json",{"phone":mobile,"smscode":code,"from":"web"},function(data){
			hideLoading();
			if(data.code==200){
				showInfoMsg("验证成功",2000);
				$("#mobile_panel").remove();
				$("#container").removeClass("lock").css("height","auto");
				setTimeout(function(){
					go(goto);
				},1500);
			}else{
				showErrorMsg(data.msg||"验证失败！");
			}
		})
	});
	$("#mobile_panel .mobile").focus();
}

function isMobile(mobile){
	var myreg=/^[1][3,4,5,6,7,8,9][0-9]{9}$/;  
  	if (!myreg.test(mobile)) {  
      	return false;  
  	} else {  
      	return true;  
  	}  
}
var dropload;
/**
 * 下拉刷新通用方法
 * obj 				页面总父级对象
 * par				滑动检测区域
 * child			内容显示区域
 * url				请求接口
 * data_tpl			模板
 * data				请求参数
 * callback			请求完成回调方法
 * empty_data_tpl	第一页内容为空时候，显示的模板
 * */
function pullLoadData(obj,par,child,url,data_tpl,data,callback,empty_data_tpl){
	//url自动加page和size
	var page=0;
	var size=20;
	data=data || {};
	data=$.extend({},data, {uid:login_uid,token:login_token});
	if(url.indexOf("http") == -1){
		url=base_url+url;
	}
	setTimeout(function(){
		dropload=$(obj).find(par).dropload({
		    scrollArea : window,
		    domDown:{
		    	domClass: "dropload-down",
				domRefresh: '<div class="dropload-refresh">↑上拉加载更多</div>',
				domLoad: '<div class="dropload-load"><span class="loading"></span>加载中...</div>',
				domNoData: '<div class="dropload-noData">已经到底了</div>'
		    },
		    loadDownFn : function(me){
		    	page++;
		    	var html="";
		        $.ajax({
		            type: 'GET',
		            url: url+'?page='+page+"&size="+size+"&limit="+size,
		            data:data,
		            dataType: 'json',
		            success: function(data){
		            	//data长度一定大于0
		                if(data.code==200 && data.data && data.data.length>0){
		                	html=template(data_tpl,data);
		                	var hasNext=true;
		                	//判断是否有下一页
		                	if(data.count && Math.ceil(data.count/size) <= page){
		                		hasNext=false;
		                	}
		                	//已经没有数据了
		                	if(!$.isArray(data.data) || data.data.length<size || !hasNext){
		                		pullNoData(me,obj)
		                	}
		                }else{
		                	pullNoData(me,obj)
		                	//如果是第一页，而且存在空数据模板
		                    if(page==1 && empty_data_tpl){
		                    	emptyDocContent(data,$(obj).find(child),empty_data_tpl);
		                    }
		                }
	                	//回调方法
                        if(callback){
                        	callback(data);
                        }
		                 // 为了测试，延迟1秒加载
	                    setTimeout(function(){
	                        // 插入数据到页面，放到最后面
	                        $(obj).find(child).append(html);
	                        // 每次数据插入，必须重置
	                        me.resetload();
	                         //设置图片延时加载
	                       /* $(obj).find(child).find("img.lazy").lazyload({
							    effect : "fadeIn"
							});*/
	                        
	                    },100);
		            },
		            error: function(xhr, type){
	                 	// 锁定
                        me.lock();
                        // 无数据
                        me.noData();
                        // 即使加载出错，也得重置
		                me.resetload();
		            }
		        });
		    }
		});
	},300);
}
/**
 * 选项卡下拉刷新---支持不同url和模板
 * obj 				页面总父级对象
 * tabList			选项卡列表
 * tabContentList	内容总父类
 * url				获取数据的链接，如果是数组，则每个选项卡都不同
 * data_tpl			数据渲染模板，如果是数组，则每个选项卡都不同
 * data				初始化请求参数
 * callback			数据请求完成的回调方法
 * method			数据请求方式，get或者post
 * hover_className	选项卡选中样式
 * initFirstData	是否加载第一页数据
 * empty_data_tpl	第一页内容为空时候，显示的模板
 * */
function tabPullLoadData(obj,tabList,tabContentList,url,data_tpl,data,callback,method,hover_className,initFirstData,empty_data_tpl){
	var itemIndex = 0;
	var tabNodata={};
	var tabPage={};
	var tabPageName="";
	var tabContentNames={};
	initFirstData=initFirstData || false;
	hover_className=hover_className || "cu";
	data=data || {};
	data=$.extend({},data, {uid:login_uid,token:login_token});
	method=method ||"GET";
	//绑定点击切换事件
	$(obj).find(tabList).on('click',function(){
        var $this = $(this);
        itemIndex = $this.index();
        $this.addClass(hover_className).siblings().removeClass(hover_className);
        
		//获取data
		var itm_data=$this.data();
		if(itm_data!=null){
			$.each(itm_data, function(i,e) {
				data[i]=e;
			});
		}
		//如果存在item_switch_2，表示2个值切换,固定值switch_up和switch_down
		if($this.hasClass("item_switch_2")){
			if($this.hasClass("switch_up")){
				//切换到down
				tabPageName="tab_"+itemIndex+"_switch_down";
				$this.removeClass("switch_up").addClass("switch_down");
				data["switch"]="up";
			}else{
				tabPageName="tab_"+itemIndex+"_switch_up";
				$this.removeClass("switch_down").addClass("switch_up");
				data["switch"]="down";
			}
		}else{
			data["switch"]="";
			tabPageName="tab_"+itemIndex;
		}
		//console.log(tabPageName);
		$(obj).find(tabContentList).find("."+tabContentNames[tabPageName]).show().siblings().hide();
		
        // 如果数据没有加载完
        if(!tabNodata[tabPageName]){
            // 解锁
            dropload.unlock();
            dropload.noData(false);
            if(initFirstData){
            	setTimeout(function(){
            		loadTabData();
            		console.log("自动加载一次数据");
            	},100);
            }
        }else{
            // 锁定
            dropload.lock('down');
            dropload.noData();
            //即使没有数据，也要回调方法
            if(callback){
            	callback(data,tabPageName,itemIndex);
            }
        }
        // 重置
        dropload.resetload();
    });
    //默认自动创建内容区域
    $(obj).find(tabList).each(function(ind,ele){
	    //自动创建content
	    var name="tab_"+ind;
	    //如果存在item_switch_2，表示2个值切换,固定值switch_up和switch_down
		if($(this).hasClass("item_switch_2")){
			//创建两条
			tabPage[name+"_switch_up"]=0;
			tabContentNames[name+"_switch_up"]="tab_content_"+name+"_switch_up";
			$(obj).find(tabContentList).append($("<div>").addClass(tabContentNames[name+"_switch_up"]))
			tabPage[name+"_switch_down"]=0;
			tabContentNames[name+"_switch_down"]="tab_content_"+name+"_switch_down";
			$(obj).find(tabContentList).append($("<div>").addClass(tabContentNames[name+"_switch_down"]))
			if(ind==0){
				tabPageName=name+"_switch_up";
			}
		}else{
			tabPage[name]=0;
			tabContentNames[name]="tab_content_"+name;
			//如果不存在，才创建
			if($(obj).find(tabContentList).find("."+tabContentNames[name]).length==0){
				$(obj).find(tabContentList).append($("<div>").addClass(tabContentNames[name]))
			}
			if(ind==0){
				tabPageName=name;
			}
		}
    })
    //console.log(tabPage)
	//url自动加page和size
	//var page=0;
	var size=20;
	setTimeout(function(){
		dropload=$(obj).dropload({
		    scrollArea : window,
		    domDown:{
		    	domClass: "dropload-down",
				domRefresh: '<div class="dropload-refresh">↑上拉加载更多</div>',
				domLoad: '<div class="dropload-load"><span class="loading"></span>加载中...</div>',
				domNoData: '<div class="dropload-noData">已经到底了</div>'
		    },
		    //threshold:100,
		    loadDownFn : function(me){
		    	loadTabData();
		    }
		});
		if(initFirstData){
			loadTabData();
		}
	},300);
	function loadTabData(){
    	tabPage[tabPageName]++;
    	var html="";
    	var ajax_url="";
    	if($.isArray(url)){
    		ajax_url=url[itemIndex];
    	}else{
    		ajax_url=url;
    	}
        $.ajax({
            type: method,
            url: ajax_url+'?page='+tabPage[tabPageName]+"&size="+size+"&limit="+size,
            data:data,
            dataType: 'json',
            success: function(data){
            	//返回状态200而且数组不能为空
                if(data.code==200 && data.data && data.data.length>0){
                	var tmpname="";
                	if($.isArray(data_tpl)){
                		tmpname=data_tpl[itemIndex];
                	}else{
                		tmpname=data_tpl;
                	}
                	html=template(tmpname,data);
                	
                	tabNodata[tabPageName]=false;
                	
                	var hasNext=true;
                	//判断是否有下一页
                	if(data.count && Math.ceil(data.count/size) <= tabPage[tabPageName]){
                		hasNext=false;
                	}
                	//已经没有数据了
                	if(!$.isArray(data.data) || data.data.length<size || !hasNext){
                		pullNoData(dropload,obj)
                    	tabNodata[tabPageName]=true;
                	}
                }else{
                	pullNoData(dropload,obj)
                    tabNodata[tabPageName]=true;
                    //如果是第一页，而且存在空数据模板
                    if(tabPage[tabPageName]==1 && empty_data_tpl){
                    	if($.isArray(empty_data_tpl)){
	                		tmpname=empty_data_tpl[itemIndex];
	                	}else{
	                		tmpname=empty_data_tpl;
	                	}
	                	//如果存在文档id，则再次请求文档作为显示内容
	                	emptyDocContent(data,$(obj).find(tabContentList).find("."+tabContentNames[tabPageName]),tmpname);
                    }
                }
                //回调方法
                if(callback){
                	callback(data,tabPageName,itemIndex);
                }
                 // 为了测试，延迟1秒加载
                setTimeout(function(){
                    // 插入数据到页面，放到最后面
                    $(obj).find(tabContentList).find("."+tabContentNames[tabPageName]).append(html);
                    //$(obj).find(child).append(html);
                    // 每次数据插入，必须重置
                    dropload.resetload();
                     //设置图片延时加载
                   /* $(obj).find(child).find("img.lazy").lazyload({
					    effect : "fadeIn"
					});*/
                    
                },100);
            },
            error: function(xhr, type){
                // 锁定
                dropload.lock();
                // 无数据
                dropload.noData();
                // 即使加载出错，也得重置
                dropload.resetload();
            }
        });
	}
}
function pullNoData(me,obj){
	 // 锁定
    me.lock();
    // 无数据
    me.noData();
    //隐藏loading
    setTimeout(function(){
    	$(obj).find(".dropload-down").slideUp()
    },1000);
}
//禁用滚动加载数据
function killPullLoad(){
	if(dropload){
		dropload.lock();
		//console.log("禁用滚动加载数据")
	}else{
		//console.log("没意思")
	}
}
//返回空模板
function getCommonEmptyPage(){
	return template("tpl_empty",{})
}
/**
 * get 方式获取数据
 * */
function ajaxGet(url,data,callback,emptycallback){
	//showLoading();
	data=data||{};
	data=$.extend({},data, {uid:login_uid,token:login_token});
	if(url.indexOf("http") == -1){
		url=base_url+url;
	}
	$.get(url,data,function(data){
		//hideLoading();
		if(data.code==200){
			if(callback){
				callback(data);
			}
		}else if(data.code!=404){
			showErrorMsg("服务器发生错误");
		}else{
			if(emptycallback){
				emptycallback(data);
			}
		}
	});
}
/**
 * post提交数据
 * */
function ajaxPost(url,data,callback,emptycallback){
	showLoading();
	data=data||{};
	url=getUrlQuerys(url,{uid:login_uid,token:login_token});
	//data=$.extend({},data, {uid:login_uid,token:login_token});
	if(url.indexOf("http") == -1){
		url=base_url+url;
	}
	
	$.post(url,data,function(data){
		hideLoading();
		if(data.code==200){
			if(callback){
				callback(data);
			}
		}else if(data.code!=404){
			showErrorMsg("服务器发生错误");
		}else{
			if(emptycallback){
				emptycallback(data);
			}
		}
	});
}
//更新url参数
function getUrlQuerys(url,da){
	if(da==null || $.isEmptyObject(da)){
		//不需要改变参数
		return url;
	}
	var querys={};
	var url2=url;
	if(url.indexOf("?") != -1){
		var sr=url.split("?");
		url2=sr[0];
		var qstr=sr[1];
		var pari=qstr.split("&");
		$.each(pari, function(ind,ele) {
			var kk=ele.split("=");
			querys[kk[0]]=kk[1];
		});
	}
	querys=$.extend({},querys, da);
	if($.isEmptyObject(querys)){
		//没有参数
		return url2;
	}
	var qstr=[];
	$.each(querys, function(ind,ele) {
		qstr.push(ind+"="+ele);
	});	
	return url2+"?"+qstr.join("&");
}

function showLoading(msg){
	if (!msg) {
		msg="数据加载中";
	}
	var loadingHtml = template("func_loading",{msg:msg});
	if($("#loadingToast").length > 0){
		$("#loadingToast").show();
	}else{
		$("body").append(loadingHtml);
	}
}
function hideLoading(){
	 $('#loadingToast').fadeOut(100,function(){
	 	$(this).remove();
	 });
}

/**
 *显示错误信息 
 * */
function showErrorMsg(msg){
	var $tooltips = $('.js_tooltips');
	if ($tooltips.css('display') != 'none') return;
	$tooltips.html(msg);
	$tooltips.css('display', 'block');
    setTimeout(function () {
        $tooltips.css('display', 'none');
    }, 2000);
}
/**
 *显示一般信息 
 * */
function showInfoMsg(msg,t){
	if(!t){
		t=2000;
	}
	var $tooltips = $('.js_info_tooltips');
	if ($tooltips.css('display') != 'none') return;
	$tooltips.html(msg);
	$tooltips.css('display', 'block');
    setTimeout(function () {
        $tooltips.css('display', 'none');
    }, t);
}
function hideInfoMsg(){
	$('.js_info_tooltips').css('display', 'none');
}
/**
 * 倒计时
 * djs.start
 * */
var djs={
	element:null,
	time:60,
	time_left:60,
	oldText:"",
	stl:null,
	start:function(ele){
		var _this=this;
		this.element=$(ele);
		this.oldText=$(ele).html();
		$(ele).attr("disabled","disabled");
		this.stl=setInterval(function(){
			_this.time_left--;
			if(_this.time_left<1){
				clearInterval(_this.stl);
				_this.time_left=_this.time;
				_this.element.html(_this.oldText)
				$(ele).removeAttr("disabled");
			}else{
				_this.element.html(_this.time_left+"s后获取")
				//console.log(_this.time_left)
			}
		},1000);
	}
}

function numb2str(day_index){
	var day_names=["一","二","三","四","五","六","七","八","九","十"];
	var index_name="";
	//十以下 
	if(day_index < 11){
		return day_names[day_index-1];
	}
	//整十
	if(day_index % 10 == 0){
		if(day_index/10 ==1){
			return "十";
		}
		return  day_names[day_index/10-1]+"十";
	}
	//十到100
	index_name=day_names[parseInt(day_index/10)-1]+"十"+day_names[day_index % 10-1];
	
	return index_name;
}




/**
* @desc 根据两点间的经纬度计算距离
* @param {float} lat1 当前地点纬度值
* @param {float} lng1 当前地点经度值
* @param {float} lat2 目标地点纬度值
* @param {float} lng2 目标地点经度值
*/
function computeDistance(lat1,lng1,lat2,lng2) {
	//这个函数取两个坐标，一个起点坐标，一个终点坐标，并返回二者之间的距离（单位为千米）
    var startLatRads = degreesToRadians(lat1);
    var startLongRads = degreesToRadians(lng1);
    var destLatRads = degreesToRadians(lat2);
    var destLongRads = degreesToRadians(lng2);
	
    var Radius = 6371; // radius of the Earth in km
    var distance=Math.acos(Math.sin(startLatRads)*Math.sin(destLatRads) +
                 Math.cos(startLatRads) * Math.cos(destLatRads) *
                 Math.cos(startLongRads - destLongRads)) * Radius;
				 
    return distance.toFixed(2);
}
/**
 * 计算数字简写
 * */
function getNumberName(num){
	if(num<9000){
		return num;
	}else if(num < 90000){
		return (num/10000).toFixed(2)+"万";
	}else if(num < 9000000){
		return parseInt(num/10000)+"万";
	}else{
		return (num/100000000).toFixed(2)+"亿";
	}
}
function uploadWxImage(localId,callback){
	wx.uploadImage({
	    localId: localId, // 需要上传的图片的本地ID，由chooseImage接口获得
	    isShowProgressTips: 1, // 默认为1，显示进度提示
	    success: function (res) {
	        var serverId = res.serverId; // 返回图片的服务器端ID
	        exchangeWxImage(serverId,callback);
	    }
	});
}
function initPreviewImg(obj){
	$(obj).on("click",".wx_img_preview",function(){
		var urls=[];
		curr=$(this).attr("src");
		$(this).parent().find("img.wx_img_preview").each(function(){
			urls.push($(this).attr("src"));
		})
		previewWxImage(curr,urls)
	})
}
function previewWxImage(curr,urls){
	wx.previewImage({
	    current: curr, // 当前显示图片的http链接
	    urls: urls // 需要预览的图片http链接列表
	});
}
// 获取url参数
function GetQueryString(name) {
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
	var r = window.location.search.substr(1).match(reg);
	if (r != null)
		return  unescape(r[2]);
	return null;
}

//--------------------cookie相关方法-----------------------
//设置cookie，不设置days默认为30天
function setCookie(keys,vals,days){
	var oDate = new Date();
	var t = Number(days) || 30;
	oDate.setDate(oDate.getDate() + t);
	document.cookie = keys + '=' + encodeURI(vals) + ';expires=' + oDate.toGMTString();
}
//获取cookie
function getCookie(keys){
	var arr = document.cookie.split('; ');
	for(var i=0;i<arr.length;i++){
		if(arr[i].split('=')[0] === keys){
			return decodeURI(arr[i].split('=')[1]);
		}
	}
}
//获取cookie 并转换成json
function getCookieJson(name){
	var data=getCookie(name);
	if(data){
		data=JSON.parse(data);
	}else{
		data=null;
	}
	return data;
}
//删除一个cookie
function removeCookie(keys){
	setCookie(keys,'',-1);
}
//删除所有cookie
function clearCookie(){
	var arr = document.cookie.split('; ');
	for(var i=0;i<arr.length;i++){
		removeCookie(arr[i].split('=')[0],'',-1);
	}
}

function timeFormat(val){
	val = val*1000;
	var y = new Date(val).getFullYear();
	var m = new Date(val).getMonth() + 1 >= 10 ? new Date(val).getMonth() + 1 : '0' + (new Date(val).getMonth() + 1);
	var d = new Date(val).getDate() >= 10 ? new Date(val).getDate() : '0' + new Date(val).getDate();
	return y + "-" + m + "-" + d;
}
/*
 * 统一支付
 * orderid 订单id
 * ordertype 订单类型
 * money 金额，只在充值或者转账时候用到
 */
function payOrder(orderid,ordertype,money){
 	return new Promise(function(resolve, reject) {
		var obj = {};
		obj.payment = 'Wechat';
		obj.ordertype = ordertype;
		obj.appid = 10000;
		obj.id = orderid;
		obj.buyerid = '';
		obj.money = money;
		if(_Global_ === 'wechat'){ 
			//客户端内部支付
			obj.paytype = 'js';
		}else if(_Global_ === 'web'){ 
			obj.paytype = 'native';
		}else{ //-------------------------------------------app-------------------------
			obj.paytype = 'app';
			//调用客户端支付接口，页面会呈现是否支付完成的按钮
			openAPI("payment",orderid,ordertype);
			reject();
			return;
		}
		//支付接口,获取返回参数
		ajaxPost('payment/pays/create.json',obj,function(data3){
			if(data3.code === 200){
				eval(data3.data);
				function paySuccess(){
					console.log("支付成功");
					showInfoMsg("支付成功");
					//go("#/order/"+data3.id+"/"+orderid)
					resolve({payid:data3.id,id:orderid});
				}
				function payCancel(){
					console.log("支付取消");
					showInfoMsg("支付取消");
					reject();
				}
				function payFail(){
					console.log("支付失败");
					showErrorMsg("支付失败");
					reject();
				}
			}
		})
 	});
}
/**
 * 上传图片统一入口
 * settings  微信选图配置，
 * 		count每次最多允许选择的数量
 * 		sourceType 可以指定来源是相册还是相机，['album', 'camera']默认二者都有，可以只选择一个
 * previewCallBack 	单条选择完成之后，本地临时预览
 * callBack 			单条上传完成的回调方法，
 * allCallBack		所有文件上传完成的回调方法
 * */
function uploadImages(settings,previewCallBack,callBack,allCallBack){
	if(_Global_ === 'wechat'){ 
		//客户端内部
		wechatUploadImages(settings,previewCallBack,callBack,allCallBack);
	}else if(_Global_ === 'web'){ 
		//普通浏览器打开
	}else{ 
		//app内部打开
	}
}
/**
 * 微信上传图片通用方法
 * settings  微信选图配置，
 * 		count每次最多允许选择的数量
 * 		sourceType 可以指定来源是相册还是相机，['album', 'camera']默认二者都有，可以只选择一个
 * previewCallBack 	单条选择完成之后，本地临时预览
 * callBack 			单条上传完成的回调方法，
 * allCallBack		所有文件上传完成的回调方法
 * */
function wechatUploadImages(settings,previewCallBack,callBack,allCallBack){
	var defaultSettings={count: 1,sourceType: ['album', 'camera']};
	settings=settings || defaultSettings;
	//异步调用微信选择图片功能
	wx.chooseImage({
	    count: settings["count"] || defaultSettings["count"], // 默认9
	    sizeType: [ 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
	    sourceType: settings["sourceType"] || defaultSettings["sourceType"], // 拍照还是相册
	    success: function (res) {
		var localIds = res.localIds; // 返回选定照片的本地ID列表，localId可以作为img标签的src属性显示图片
		var finishCount=0;
		var sumCount=localIds.length;
		var allData=[];
		$.each(localIds, function(ind,localFileId) {
			//延时上传
			setTimeout(function(){
				//本地临时预览回调方法
				if(previewCallBack){
					previewCallBack(localFileId);
				}
				//异步调用上传图片到微信服务器
				wx.uploadImage({
				    localId: localFileId, // 需要上传的图片的本地ID，由chooseImage接口获得
				    isShowProgressTips: 1, //强制增加loading
				    success: function (res) {
				    	// 返回图片的服务器端ID，只有成功才返回，失败没有处理方法
				        var serverId = res.serverId; 
				        //通过微信服务器返回的图片ID转换成我们的图片地址
				        ajaxGet("wechat/images/formart.json",{
							"id":10000,
							"sourceid":serverId
						},function(data){
							//data返回数据结构
							/*{"code": 200,
								"data": {
									"url": "img\/weixin\/eZEvg13mljl_iRxDiEwKMklPMqtP_J2wW5-puvT3wCxIY_HpSFGYxlJZ66n095IX.jpg",
									"fullurl": "http:\/\/cdn6.mofing.com\/img\/weixin\/eZEvg13mljl_iRxDiEwKMklPMqtP_J2wW5-puvT3wCxIY_HpSFGYxlJZ66n095IX.jpg"
							}}*/
							if(data && data.code==200){
								allData.push(data.data);
								//只返回一条数据
								if(callBack){
									//1:返回data对象，
									//2:本地文件地址，可以用于当前页面预览显示，
									//3:当前图片顺序，
									//4:完成的顺序
									callBack(data.data,localFileId,ind,finishCount);							
								}
							}else{
								console.log("转换失败");
							}
							finishCount++;
							//不管成功与否，返回所有的数据
							if(finishCount>=sumCount && allCallBack){
								//返回所有data对象数组
								//2:本地文件地址数组，循环之后，可以用于当前页面预览显示
								allCallBack(allData,localIds);
							}
						})
				    }
				});
			},100)
		});
	    }
	});
}
//增加城市获取
//ajaxGet('utils/ip/city.json',{},function(){	console.log("统计城市OK")})
$(function(){
	//初始化加载 
	if(_Global_=="app"){
		//$("body").addClass("withapp");
	}
})
//调用客户端接口
function openAPI(meth,id,type){
	var isIos=false;
	if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
		isIos=true;
	}
    try {
        	console.log(meth+" "+ id);
        	if(isIos){
        		window.location.href="mofing://notefunction/?key="+meth+"&id="+id+"&type="+type
        	}else{
				window.exercise.call("notefunction",meth,id,type);
        	}
    	} catch (e) {
    		console.log("接口调用失败")
    	}
}
/**
 * 加载文档内容
 * @param {Object} data json返回数据
 * @param {Object} obj 需要被替换的元素
 * @param {String} empty_data_tpl 模板名称
 */
function emptyDocContent(data,obj,empty_data_tpl){
	//优先文档id
	if(data.doccid && data.doccid>0){
		ajaxGet("utils/docs/articles/"+data.doccid+".json",{},function(data){
			html=template(empty_data_tpl,data);
			$(obj).append(html);
		})
	}else if(data.docid && data.docid>0){
		//加载文档内容
		ajaxGet("utils/docs/content/"+data.docid+".json",{},function(data){
			html=template(empty_data_tpl,data);
			$(obj).append(html);
		})
	}else{
		html=template(empty_data_tpl,data);
		$(obj).append(html);
	}
}
/**
 * 全屏方法，obj在bind方法中，用this
 * @param {Object} obj
 */
function fullDocument(obj){
	var height=$(window).height();
	$(obj).css({"min-height":height})
}
/**
 * 报告错误信息
 * @param {string} data
 */
function reportError(data){
	$.post("/utils/report/wechat/10000.json",{data:data},function(res){
		console.log(res.code==200?"反馈成功":"反馈失败")
	})
}
